//
// Created by francklinson on 2021/5/27.
//

//实现一个算法，确定一个字符串 s 的所有字符是否全都不同。
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;

class Solution {
public:
    bool isUnique(string astr) {
       unordered_map<char,int>fre;
       for(auto &x:astr){
           ++ fre[x];
           if (fre[x] >1) return false;
       }
        return true;
    }
    bool isUnique2(string astr) {
        // 不用额外的数据结构 进行位运算
        int mark = 0 ;
        for(auto &x:astr){
            int move_bit = x - 'a';
            if ((mark & 1 << move_bit) !=0) return false;
            else mark |= (1<< move_bit);
        }
        return true;
    }
};


int main() {
    Solution sol;
    cout << sol.isUnique2("ltcode") << endl;
    cout << sol.isUnique2("leetcode") << endl;
    return 0;
}